home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 32 / PC Gamer IT CD 32 2-2.iso / drivers / videodrv / T9850 / DRIVER / WIN31 / VESA_AFC.H < prev    next >
C/C++ Source or Header  |  1995-03-21  |  14KB  |  229 lines

  1. /**********************************************************************************************
  2.     *    VESA_AFC.H    
  3.     *    In term of VESA Advanced Feature Connector (VAFC) Software Interface Proposal
  4.     *    Version:        1.0P 
  5.     *    Revision:        0.09
  6.     *    Revision date:    April 13, 1994
  7.     *    This header file defines the interface that a VAFC-compliant graphics subsystem
  8.     *    must supply. It contains the VAFC standard preprocessor definition, type and 
  9.     *    structure definitions, and API messages.
  10. **********************************************************************************************/
  11. #ifndef    _VESA_AFC
  12. #define    _VESA_AFC
  13.  
  14. /*** Status codes ***/
  15. #define VAFCERR_NONE                    0  /* No errors have occurred */
  16. #define VAFCERR_GENERAL_FAILURE            1  /* General failure */
  17. #define VAFCERR_NOSUPPORT_COLORSPACE    2  /* Color space not supported */
  18. #define VAFCERR_NOSUPPORT_BUSWIDTH        3  /* Bus width configuration not supported */
  19. #define VAFCERR_NOSUPPORT_ESCAPECODE    4  /* Escape code not supported */
  20. #define VAFCERR_NOSUPPORT_CLOCKING        5  /* Clocking mode not supported */
  21. #define VAFCERR_NOSUPPORT_DATAMODE        6  /* Does not support synch/asynch data mode */
  22. #define VAFCERR_NOSUPPORT_OVERLAYKEY    7  /* Graphics subsystem does not support overlay keying -- overlay key ignored */    
  23. #define VAFCERR_NOSUPPORT_POSITION        8  /* Graphics subsystem does not support new video position */
  24. #define VAFCERR_NOSUPPORT_EXTENDED_MODE    9  /* The graphics subsystem does not support the VAFC extended mode */
  25. #define VAFCERR_INVALID_OVERLAY_KEY        10 /* The chosen overlay color key is invalid for the current graphics color space format */
  26. #define VAFCERR_INVALID_POSITION        11 /* The chosen window position is invalid */
  27. #define VAFCERR_INVALID_SIZE            12 /* The chosen window size is invalid */ 
  28. #define VAFCERR_INCOMPLETE_LIST            13 /* The color space format list is incomplete */
  29. #define VAFCERR_INVALID_STRUCTURE        14 /* The passed sturcture's size is invalid for the current graphics color space format */
  30. #define VAFCERR_NOT_WORD_BOUNDARY        15 /* The video position/size is not on a word (16-bit) boundary */
  31. #define VAFCERR_NOT_DWORD_BOUNDARY        16 /* The video position/size is not on a double word boundary */
  32. #define VAFCERR_NOT_QWORD_BOUNDARY        17 /* The video position/size is not on a quad word boundary */
  33. #define VAFCERR_NOT_DQWORD_BOUNDARY        18 /* The video position/size is not on a double-quad word boundary */
  34. #define VAFCERR_MAX_ERRORS                19 /* Number of error codes, for string table manipulation */
  35.  
  36. /*** Vendor string length ***/
  37. #define    MAX_VENDOR_LEN                    63 /* Maximum characters in the VESA vendor string */
  38.  
  39. /*** VAVI Devices ***/
  40. #define    VIDEO_INPUT            0x0001    /* Video input device -- UNUSED */    
  41. #define    GRAPHIC_PORT        0x0002    /* Graphics device -- UNUSED */
  42. #define    VIDEO_COMPRESSOR    0x0004    /* Video compressor */
  43. #define    VIDEO_DECOMPRESSOR    0x0008    /* Video decompressor -- UNUSED */
  44. #define    VAFC_DEVICE            0x0010    /* VAFC device -- ALWAYS use the code !!! */
  45. #define    ALL_DEVICES            0xffff    /* All VAVI devices -- UNUSED */
  46.  
  47. /*** Device Capabilities ***/
  48. #define VAFC_SUPPORTS_OVERLAY_KEY        0x00000001    /* Device supports overlay color keying */
  49. #define VAFC_SUPPORTS_OVERLAY_MASKS        0x00000002    /* Device supports overlay masks */
  50. #define VAFC_SUPPORTS_EXTENDED_QUERY    0x00000004    /* Device supports extended mode GET call */
  51. #define VAFC_SUPPORTS_EXTENDED_SETUP    0x00000008    /* Device supports extended mode SET call */
  52. #define VAFC_SUPPORTS_POSITIONING        0x00000010    /* Device supports window positioning */
  53. #define VAFC_SUPPORTS_OEM_API            0x00000020    /* Device has an OEM-specific API */
  54.  
  55. /*** Alignment flags
  56.  *    If none of the following is specified, it should be assumed that the VAFC driver and
  57.  *    device support BYTE alignment.
  58. ***/                             
  59. #define VAFC_SUPPORTS_WORD_ALIGN        0x00000040    /* Device supports word (16-bit) boundary alignment */
  60. #define VAFC_SUPPORTS_DWORD_ALIGN        0x00000080    /* Device supports double word boundary alignment */
  61. #define VAFC_SUPPORTS_QWORD_ALIGN        0x00000100    /* Device supports quad word boundary alignment */
  62. #define VAFC_SUPPORTS_DQWORD_ALIGN        0x00000200    /* Device supports double-quad word boundary alignment */
  63.  
  64. /*** The following device capabilities mask is used to determine the number of color space
  65.  *    formats the device supports. This can be used when using the message 
  66.  *    DRV_VAFC_QUERY_COLOR_SPACE.
  67. ***/
  68. #define VAFC_COLOR_SPACES_MASK            0xff000000    /* Definition to mask the number of color spaces */
  69.  
  70. /*** Vendor information block ***/
  71. typedef struct tagVESADEVICECAPS {
  72.     unsigned long    dwSize;                        /* Size of this structure */
  73.     unsigned long    dwStructRevID;                /* Structure revison ID = 0x0100 */
  74.     char            szVendor[MAX_VENDOR_LEN+1];    /* Vendor string -- assigned by individual companies */            
  75.     unsigned long    dwModelID;                    /* Vendor specific Device ID */
  76.     unsigned long    dwRevID;                    /* Vendor specific revison ID */
  77.     unsigned short    wDeviceType;                /* VESA registered device type */
  78.     unsigned long    dwDeviceCaps;                /* Device capabilities field */
  79.     unsigned long    dwReserved1;                /* Unused by VAFC, reserved for VMC usage */
  80.     unsigned short    wReserved2;                    /* Unused by VAFC, reserved for VMC usage */
  81. } VESA_DEVICECAPS;                                                                                            
  82. typedef VESA_DEVICECAPS _far *LPVESA_DEVICECAPS;                                                                                            
  83.  
  84. /*** Graphics information block ***/
  85. typedef struct tagGraphicsInfoBlock {
  86.     unsigned long    dwSize;                    /* Size of the structure */
  87.     unsigned long    dwColorSpace;            /* Graphics buffer color space format */
  88.     unsigned short    wActivePixelWidth;        /* Number of active pixels on the screen */                    
  89.     unsigned short    wActivePixelHeight;        /* Number of active lines on the screen */                    
  90.     unsigned short    wTopBorderHeight;        /* Number of lines in top border */                    
  91.     unsigned short    wBottomBorderHeight;    /* Number of lines in bottom border */                    
  92.     unsigned short    wLeftBorderHeight;        /* Number of lines in the left border */                    
  93.     unsigned short    wRightBorderHeight;        /* Number of lines in the right border */                    
  94.     unsigned short    wHorzSyncPoparity;        /* Graphics horizontal sync polarity */                    
  95.     unsigned short    wVertSyncPolarity;        /* Graphics vertical sync polarity */    
  96.     unsigned short    fInterlaced;            /* Interlaced status -- TRUE/FALSE flag */                    
  97. } VAFCGRAPHICS_INFO;
  98. typedef VAFCGRAPHICS_INFO _far *LPVAFCGRAPHICS_INFO;                            
  99.  
  100. /*** Extended mode information block ***/
  101. typedef struct tagExtendedModeInfoBlock {
  102.     unsigned long    dwSize;                    /* Size of the structure */
  103.     unsigned short    wFIFOSize;                /* FIFO size, in bytes */    
  104.     unsigned short    wFullLevel;                /* Full Level of FIFO, in bytes */                    
  105. } VAFCEXTENDED_INFO;
  106. typedef VAFCEXTENDED_INFO _far *LPVAFCEXTENDED_INFO;
  107.  
  108. /*** Setup controls ***/
  109.  
  110. /*** VAFCESCAPE
  111.  *    allows vendors who control both side of the interface to define VENDOR SPECIFIC 
  112.  *    parameters. If a parameter ANDed with VAFCESCAPE returns a none-zero result, the
  113.  *    option is VENDOR SPECIFIC. If the VAFC driver does not support VAFCESCAPE, it should
  114.  *    return VAFC_NOSUPPORT_ESCAPECODE.
  115.  *    Vendor specific parameters have to be handled on a vendor-by-vendor basis. To do this,
  116.  *    it is assumed that the application and/or driver provider will get the necessory VAFC
  117.  *    vendor-specific interface documents and APIs from the vendor itself.
  118. ***/
  119. #define VAFCESCAPE        0x80000000        /* User defined */
  120.  
  121. /*** The following define the color space formats for data crossing the VAFC connector.
  122.  *    The default format is VAFCRGB_8_INDEXED. These same definitions are used by the VAFC
  123.  *    driver to specify the color space format of the graphics buffer in the current graphics
  124.  *    mode.
  125. ***/
  126. #define VAFCRGB_8_INDEXED    0x00000001    /* Standard 8 bits indexed color */
  127. #define VAFCRGB_15A            0x00000002    /* 16 bits aRGB, organized as 1:5:5:5 */
  128. #define VAFCRGB_16            0x00000004    /* 16 bits RGB, organized as 5:6:5 */
  129. #define VAFCRGB_24            0x00000008    /* 24 bits RGB, organized as 8:8:8 */
  130. #define VAFCRGB_32A            0x00000010    /* 32 bits aRGB, organized as 8:8:8:8 */
  131. #define VAFCYUV_422            0x00000020    /* Packed YUV, organized as 4:2:2 */
  132. #define VAFCYUV_444            0x00000040    /* Packed YUV, organized as 4:4:4 */
  133. /*** The following extra color space definitions are provided as base escape code color 
  134.  *    space. Notice, as more color space are defined that they should be ORed with the 
  135.  *    VAFCESCAPE code.
  136. ***/
  137. #define VAFCRGB_8            (VAFCESCAPE | 0x00000001)    /* 8 bits RGB, organized as 3:3:2 */
  138. #define VAFCYUV_411            (VAFCESCAPE | 0x00000002)    /* Packed YUV, organized as 4:1:1 */
  139. #define VAFCRGB_15            (VAFCESCAPE | 0x00000004)    /* 16 bits RGB, organized as x:5:5:5 */
  140.  
  141. /*** The following define the available bus transfer widths avaiable across the VAFC 
  142.  *    connector. The directions of the transfer are explicitly described in the definitions.
  143.  *    The default or power up state of the H/W is a tri-stated VAFCBUS_8_OUT.
  144. ***/
  145. #define VAFCBUS_8_OUT    0x00000001    /* Standard 8-bit data out (from DAC) */                                                                        
  146. #define VAFCBUS_8_IN    0x00000002    /* Standard 8-bit data out (to DAC) */
  147. #define VAFCBUS_16_OUT    0x00000004    /* 16-bit data out (from DAC) */                                                                        
  148. #define VAFCBUS_16_IN    0x00000008    /* 16-bit data out (to DAC) */
  149. #define VAFCBUS_32_OUT    0x00000010    /* 32-bit data out (from DAC) */                                                                        
  150. #define VAFCBUS_32_IN    0x00000020    /* 32-bit data out (to DAC) */
  151.                                          
  152. /*** The following define the available clocking modes across the VESA_VAFC bus. The default
  153.  *    power up state of the connector is 1x clocking mode, VAFCCLOCK_1X.
  154. ***/
  155. #define VAFCCLOCK_1X    0x00000001    /* 1X clock mode -- dot clock provided */                                                                        
  156. #define VAFCCLOCK_2X    0x00000002    /* 2X clock mode -- dot clock / 2 provided */                                                                        
  157. #define VAFCCLOCK_4X    0x00000004    /* 4X clock mode -- dot clock / 4 provided; for 1280 mode support */    
  158.  
  159. /*** The following define the available data mode across the VAFC connector ***/
  160. #define VAFCDATA_SYNCHRONOUS    0x00000001    /* Synchronous data mode */                                                                        
  161. #define VAFCDATA_ASYNCHRONOUS    0x00000002    /* Asynchronous data mode */
  162.  
  163. /*** Preferred setup structure ***/
  164. typedef struct tagPreferredParameters {
  165.     unsigned long    dwSize;                    /* Size of the structure */
  166.     unsigned long    dwColorSpace;            /* Color space format */
  167.     unsigned short    dwBusWidth;                /* Bus width */                    
  168.     unsigned short    dwClockingMode;            /* Clocking mode */                    
  169.     unsigned short    dwDataMode;                /* Data mode */                    
  170. } VAFCPREFERRED_PARAMETERS;                                
  171. typedef VAFCPREFERRED_PARAMETERS _far *LPVAFCPREFERRED_PARAMETERS;
  172.  
  173. /*** Overlay controls ***/
  174. /*** The values for the four bColorValueN members of the VAFCOVERLAY_CONTROLS structure
  175.  *    depends on the color space format of the graphics subsystem:
  176.  *
  177.  *    If the graphics is using an 8-bit indexed color space, then the lower eight bits of
  178.  *    bColorValue0 is the overlay color index. The rest of the variable should be masked 
  179.  *    (value & 0xffffff00).
  180.  *
  181.  *    If the graphics is in a true-color modes, bColorValue0 is the red value, bColorValue1
  182.  *    is the green value and bColorValue2 is the blue value. If the video color space format
  183.  *    includes alpha information, then bColorValue3 is the alpha value.
  184.  *
  185.  *    For VAFC devices that support both overlay color keying and overlay masking, the 
  186.  *    bColorValueN member can be used to mask each appropriate component.
  187.  *
  188.  *    NOTE: If the graphics sussystem does not support overlay color keying (it overlay based on
  189.  *    image size and position) then the VAFC driver should return VAFCERR_NOSUPPORT_OVERLAYKEY
  190.  *    to signify that the overlay key is ignored.
  191. ***/
  192. typedef struct tagVAFCOverlayControls {
  193.     unsigned long    dwSize;                    /* Size of the structure */
  194.     unsigned char    bColorValue0;            /* Meaning depends on graphics color space format */
  195.     unsigned char    bColorValue1;            /* Meaning depends on graphics color space format */
  196.     unsigned char    bColorValue2;            /* Meaning depends on graphics color space format */
  197.     unsigned char    bColorValue3;            /* Meaning depends on graphics color space format */
  198.     unsigned char    bMaskValue0;            /* Meaning depends on graphics color space format */
  199.     unsigned char    bMaskValue1;            /* Meaning depends on graphics color space format */
  200.     unsigned char    bMaskValue2;            /* Meaning depends on graphics color space format */
  201.     unsigned char    bMaskValue3;            /* Meaning depends on graphics color space format */
  202. } VAFCOVERLAY_CONTROLS;
  203. typedef VAFCOVERLAY_CONTROLS _far *LPVAFCOVERLAY_CONTROLS;
  204.  
  205. /*** Interface Messages ***/
  206. #define DRV_VAFC_GET_DEVCAPS                DRV_RESERVED
  207. #define DRV_VAFC_GET_COLOR_SPACE            DRV_RESERVED + 1
  208. #define DRV_VAFC_SET_COLOR_SPACE            DRV_RESERVED + 2
  209. #define DRV_VAFC_GET_BUS_WIDTH                DRV_RESERVED + 3
  210. #define DRV_VAFC_SET_BUS_WIDTH                DRV_RESERVED + 4
  211. #define DRV_VAFC_GET_DATA_MODE                DRV_RESERVED + 5
  212. #define DRV_VAFC_SET_DATA_MODE                DRV_RESERVED + 6
  213. #define DRV_VAFC_GET_CLOCK_MODE                DRV_RESERVED + 7
  214. #define DRV_VAFC_SET_CLOCK_MODE                DRV_RESERVED + 8
  215. #define DRV_VAFC_GET_OVERLAY_COLOR_INFO        DRV_RESERVED + 9
  216. #define DRV_VAFC_SET_OVERLAY_COLOR_INFO        DRV_RESERVED + 10
  217. #define DRV_VAFC_GET_GRAPHICS_INFO            DRV_RESERVED + 11
  218. #define DRV_VAFC_GET_WINDOW_RECT            DRV_RESERVED + 12
  219. #define DRV_VAFC_SET_WINDOW_RECT            DRV_RESERVED + 13
  220. #define DRV_VAFC_QUERY_COLOR_SPACES            DRV_RESERVED + 14
  221. #define DRV_VAFC_GET_EXTENDED_SETUP            DRV_RESERVED + 15
  222. #define DRV_VAFC_SET_EXTENDED_SETUP            DRV_RESERVED + 16
  223. #define DRV_VAFC_GET_PREFERRED_SETUP        DRV_RESERVED + 17
  224. #define DRV_VAFC_GET_ERROR                    DRV_RESERVED + 18 
  225.  
  226. #define DRV_VAFC_VENDOR_START                DRV_RESERVED + 0x1000
  227. #define DRV_VAFC_VENDOR_END                    DRV_RESERVED + 0x1300
  228.  
  229. #endif    //*** End of standard VESA_AFC definition